package cn.lcvc.xnc.authority.model;

import io.swagger.annotations.ApiModel;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.NoArgsConstructor;
import org.hibernate.validator.constraints.Length;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.util.Date;

/**
 * 角色
 */
@ApiModel(value="角色")
@Data
@EqualsAndHashCode(callSuper = false,of = {"id"})
@NoArgsConstructor
public class SysRole implements java.io.Serializable{
    private Integer id;
    @NotBlank(message = "角色名称不能为空")
    @Length(min = 2, max = 20, message = "角色标识长度必须在 {min} - {max} 之间")
    private String name;//角色名称，采用spring security的命名规则
    @NotBlank(message = "角色名不能为空")
    @Length(min = 2, max = 20, message = "角色名长度必须在 {min} - {max} 之间")
    private String nameZh;//角色中文名称
    @NotNull(message = "级别不能为空")
    private Integer level;//角色级别
    private String description;//角色说明
    @NotNull(message = "可用状态不能为空")
    private Boolean enabled;//是否启用,true表示启用
    @NotNull(message = "默认角色不能为空")
    private Boolean defaultRole;//是否为默认角色（true表示是），方便用户创建时的选择，如果是，则在创建账户时默认选择（也可自行取消）
    private Date createTime;//创建时间
    public SysRole(Integer id) {
        this.id = id;
    }

    //非数据库字段
    private Integer userNumber;//该角色对应的账户数量
    private Integer permissionumber;//该角色对应的权限数量
}
